Unless otherwise indicated herein, the discussion presented in this section is not admitted prior art to the claims in this application.
Ray tracing is a rendering technique that calculates an image of a scene by simulating the way rays of light travel in the real world. The process includes casting rays of light from a viewer (e.g., eye, camera, etc.) backwards through a viewing plane and into a scene. The user specifies the location of the viewer, light sources, and a database of objects including surface texture properties of objects, their interiors (if transparent) and any atmospheric media such as fog, haze, fire, and the like.
For every pixel in the final image, one or more viewing rays are shot from the camera into the scene to see if it intersects with any of the objects in the scene. These “viewing rays” originate from the viewer, represented by the camera, and pass through the viewing window, which represents the final image. When the ray hits an object, the material properties of that object are computed, and further rays can be launched for specular reflectivity, shadow effects, illumination effects, and so on.
Before a ray can be evaluated against an intersecting object, the object and its point of intersection with the ray must first be identified. At the core of any ray tracing system, are the acceleration structures that facilitate ray traversal through a scene in order to identify such intersections. Since ray traversal is a computationally intense activity, it is not surprising that numerous ray tracing acceleration structures and techniques have been developed over the years.